package cn.com.lsjz.commons.repository.base;

import java.io.Serializable;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.transaction.annotation.Transactional;

@NoRepositoryBean // 表示该接口不会创建这个接口的实例
@Transactional(readOnly = true)
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {

	/**
	 * 使用原生Sql进行查询集合对象
	 * 
	 * @param sql
	 * @return
	 */
	List<Object[]> findBySQL(String sql, Object... args);
	
	/**
	 * 使用原生sql进行修改、删除操作
	 * 
	 * @param sql
	 * @param args
	 */
	@Transactional
	public void updateBySql(String sql, Object... args);

	/**
	 * 使用HQL进行修改、删除操作
	 * 
	 * @param hql
	 * @param args
	 */
	@Transactional
	public void updateByHql(String hql, Object... args);

}
